{ "cells": [ { "cell_type": "markdown", "id": "79d9aaef", "metadata": {}, "source": [ "# Working with Market Depth and Trades" ] }, { "cell_type": "markdown", "id": "d0585554", "metadata": {}, "source": [ "## Display 3-depth" ] }, { "cell_type": "code", "execution_count": 1, "id": "8bbb4d6f-7a84-4fec-ac56-24a3d2b3d78a", "metadata": {}, "outputs": [], "source": [ "from numba import njit\n", "\n", "@njit\n", "def print_3depth(hbt):\n", " while hbt.elapse(60_000_000_000) == 0:\n", " print('current_timestamp:', hbt.current_timestamp)\n", "\n", " # Gets the market depth for the first asset, in the same order as when you created the backtest.\n", " depth = hbt.depth(0)\n", "\n", " # a key of bid_depth or ask_depth is price in ticks.\n", " # (integer) price_tick = rice / tick_size\n", " i = 0\n", " for price_tick in range(depth.best_ask_tick, depth.best_ask_tick + 100):\n", " qty = depth.ask_qty_at_tick(price_tick)\n", " if qty > 0:\n", " print(\n", " 'ask: ',\n", " qty,\n", " '@',\n", " np.round(price_tick * depth.tick_size, 1)\n", " )\n", " \n", " i += 1\n", " if i == 3:\n", " break\n", " i = 0\n", " for price_tick in range(depth.best_bid_tick, max(depth.best_bid_tick - 100, 0), -1):\n", " qty = depth.bid_qty_at_tick(price_tick)\n", " if qty > 0:\n", " print(\n", " 'bid: ',\n", " qty,\n", " '@',\n", " np.round(price_tick * depth.tick_size, 1)\n", " )\n", " \n", " i += 1\n", " if i == 3:\n", " break\n", " return True" ] }, { "cell_type": "code", "execution_count": 2, "id": "0aab2f88", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "\n", "btcusdt_20240809 = np.load('usdm/btcusdt_20240809.npz')['data']\n", "btcusdt_20240808_eod = np.load('usdm/btcusdt_20240808_eod.npz')['data']" ] }, { "cell_type": "code", "execution_count": 3, "id": "79afc7c0", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "current_timestamp: 1723161661500000000\n", "ask: 1.759 @ 61594.2\n", "ask: 0.006 @ 61594.4\n", "ask: 0.114 @ 61595.2\n", "bid: 3.526 @ 61594.1\n", "bid: 0.016 @ 61594.0\n", "bid: 0.002 @ 61593.9\n", "current_timestamp: 1723161721500000000\n", "ask: 2.575 @ 61576.6\n", "ask: 0.004 @ 61576.7\n", "ask: 0.455 @ 61577.0\n", "bid: 2.558 @ 61576.5\n", "bid: 0.002 @ 61576.0\n", "bid: 0.515 @ 61575.5\n", "current_timestamp: 1723161781500000000\n", "ask: 0.131 @ 61629.7\n", "ask: 0.005 @ 61630.1\n", "ask: 0.005 @ 61630.5\n", "bid: 5.742 @ 61629.6\n", "bid: 0.247 @ 61629.4\n", "bid: 0.034 @ 61629.3\n", "current_timestamp: 1723161841500000000\n", "ask: 0.202 @ 61621.6\n", "ask: 0.002 @ 61622.5\n", "ask: 0.003 @ 61622.6\n", "bid: 3.488 @ 61621.5\n", "bid: 0.86 @ 61620.0\n", "bid: 0.248 @ 61619.6\n", "current_timestamp: 1723161901500000000\n", "ask: 1.397 @ 61584.0\n", "ask: 0.832 @ 61585.1\n", "ask: 0.132 @ 61586.0\n", "bid: 3.307 @ 61583.9\n", "bid: 0.01 @ 61583.8\n", "bid: 0.002 @ 61582.0\n" ] } ], "source": [ "from hftbacktest import BacktestAsset, HashMapMarketDepthBacktest\n", "\n", "asset = (\n", " BacktestAsset()\n", " .data(btcusdt_20240809)\n", " .initial_snapshot(btcusdt_20240808_eod)\n", " .linear_asset(1.0) \n", " .constant_latency(10_000_000, 10_000_000)\n", " .risk_adverse_queue_model() \n", " .no_partial_fill_exchange()\n", " .trading_value_fee_model(0.0002, 0.0007)\n", " .tick_size(0.1)\n", " .lot_size(0.001)\n", ")\n", "\n", "hbt = HashMapMarketDepthBacktest([asset])\n", "\n", "print_3depth(hbt)\n", "\n", "_ = hbt.close()" ] }, { "cell_type": "markdown", "id": "354e8fec-95cb-4205-b820-f934fa2d5836", "metadata": {}, "source": [ "## Efficient Market Depth Access\n", "\n", "`ROIVectorMarketDepth` provides more efficient market depth access through a vector that holds a limited price range of interest. The backtester using this feature can be created by `ROIVectorMarketDepthBacktest`." ] }, { "cell_type": "code", "execution_count": 4, "id": "580a566c-6520-40b0-90ec-c2a933017b52", "metadata": {}, "outputs": [], "source": [ "from numba import njit\n", "\n", "@njit\n", "def print_3depth_fast(hbt):\n", " roi_lb_tick = int(round(30000 / 0.1))\n", " roi_ub_tick = int(round(90000 / 0.1))\n", " \n", " while hbt.elapse(60_000_000_000) == 0:\n", " print('current_timestamp:', hbt.current_timestamp)\n", "\n", " # Gets the market depth for the first asset, in the same order as when you created the backtest.\n", " depth = hbt.depth(0)\n", "\n", " # a key of bid_depth or ask_depth is price in ticks.\n", " # (integer) price_tick = price / tick_size\n", " i = 0\n", " for price_tick in range(depth.best_ask_tick, depth.best_ask_tick + 100):\n", " # depth.ask_depth returns the ask depth array, whose length is (roi_ub_tick + 1 - roi_lb_tick),\n", " # containing the quantities ranging from roi_lb_tick to roi_ub_tick.\n", " # Checks that the price_tick is in that range and adjust the index by subtracting roi_lb_tick.\n", " if price_tick < roi_lb_tick or price_tick > roi_ub_tick:\n", " continue\n", " t = price_tick - roi_lb_tick\n", " qty = depth.ask_depth[t]\n", " if qty > 0:\n", " print(\n", " 'ask: ',\n", " qty,\n", " '@',\n", " np.round(price_tick * depth.tick_size, 1)\n", " )\n", " \n", " i += 1\n", " if i == 3:\n", " break\n", " i = 0\n", " for price_tick in range(depth.best_bid_tick, max(depth.best_bid_tick - 100, 0), -1):\n", " # depth.bid_depth returns the bid depth array, whose length is (roi_ub_tick + 1 - roi_lb_tick),\n", " # containing the quantities ranging from roi_lb_tick to roi_ub_tick.\n", " # Checks that the price_tick is in that range and adjust the index by subtracting roi_lb_tick.\n", " if price_tick < roi_lb_tick or price_tick > roi_ub_tick:\n", " continue\n", " t = price_tick - roi_lb_tick\n", " qty = depth.bid_depth[t]\n", " if qty > 0:\n", " print(\n", " 'bid: ',\n", " qty,\n", " '@',\n", " np.round(price_tick * depth.tick_size, 1)\n", " )\n", " \n", " i += 1\n", " if i == 3:\n", " break\n", " return True" ] }, { "cell_type": "code", "execution_count": 5, "id": "94d2e7a7-9179-4380-8e18-661833a4b95f", "metadata": {}, "outputs": [], "source": [ "from hftbacktest import ROIVectorMarketDepthBacktest\n", "\n", "asset = (\n", " BacktestAsset()\n", " .data(btcusdt_20240809)\n", " .initial_snapshot(btcusdt_20240808_eod)\n", " .linear_asset(1.0) \n", " .constant_latency(10_000_000, 10_000_000)\n", " .risk_adverse_queue_model() \n", " .no_partial_fill_exchange()\n", " .trading_value_fee_model(0.0002, 0.0007)\n", " .tick_size(0.1)\n", " .lot_size(0.001)\n", " # Sets the lower bound price for the range of interest in the market depth.\n", " .roi_lb(30000)\n", " # Sets the upper bound price for the range of interest in the market depth.\n", " .roi_ub(90000)\n", ")\n", "\n" ] }, { "cell_type": "code", "execution_count": 6, "id": "a8e2b8bc-eb4f-4401-9d1c-d4e5428708e4", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "current_timestamp: 1723161661500000000\n", "ask: 1.759 @ 61594.2\n", "ask: 0.006 @ 61594.4\n", "ask: 0.114 @ 61595.2\n", "bid: 3.526 @ 61594.1\n", "bid: 0.016 @ 61594.0\n", "bid: 0.002 @ 61593.9\n", "current_timestamp: 1723161721500000000\n", "ask: 2.575 @ 61576.6\n", "ask: 0.004 @ 61576.7\n", "ask: 0.455 @ 61577.0\n", "bid: 2.558 @ 61576.5\n", "bid: 0.002 @ 61576.0\n", "bid: 0.515 @ 61575.5\n", "current_timestamp: 1723161781500000000\n", "ask: 0.131 @ 61629.7\n", "ask: 0.005 @ 61630.1\n", "ask: 0.005 @ 61630.5\n", "bid: 5.742 @ 61629.6\n", "bid: 0.247 @ 61629.4\n", "bid: 0.034 @ 61629.3\n", "current_timestamp: 1723161841500000000\n", "ask: 0.202 @ 61621.6\n", "ask: 0.002 @ 61622.5\n", "ask: 0.003 @ 61622.6\n", "bid: 3.488 @ 61621.5\n", "bid: 0.86 @ 61620.0\n", "bid: 0.248 @ 61619.6\n", "current_timestamp: 1723161901500000000\n", "ask: 1.397 @ 61584.0\n", "ask: 0.832 @ 61585.1\n", "ask: 0.132 @ 61586.0\n", "bid: 3.307 @ 61583.9\n", "bid: 0.01 @ 61583.8\n", "bid: 0.002 @ 61582.0\n" ] } ], "source": [ "hbt = ROIVectorMarketDepthBacktest([asset])\n", "\n", "print_3depth_fast(hbt)\n", "\n", "_ = hbt.close()" ] }, { "cell_type": "markdown", "id": "a8f00571", "metadata": {}, "source": [ "## Order Book Imbalance" ] }, { "cell_type": "code", "execution_count": 7, "id": "e8d55680", "metadata": {}, "outputs": [], "source": [ "@njit\n", "def orderbookimbalance(hbt, out):\n", " roi_lb_tick = int(round(30000 / 0.1))\n", " roi_ub_tick = int(round(90000 / 0.1))\n", "\n", " while hbt.elapse(10 * 1e9) == 0:\n", " depth = hbt.depth(0)\n", " \n", " mid_price = (depth.best_bid + depth.best_ask) / 2.0\n", " \n", " sum_ask_qty_50bp = 0.0\n", " sum_ask_qty = 0.0\n", " for price_tick in range(depth.best_ask_tick, roi_ub_tick + 1):\n", " if price_tick < roi_lb_tick or price_tick > roi_ub_tick:\n", " continue\n", " t = price_tick - roi_lb_tick\n", " \n", " ask_price = price_tick * depth.tick_size\n", " depth_from_mid = (ask_price - mid_price) / mid_price\n", " if depth_from_mid > 0.01:\n", " break\n", " sum_ask_qty += depth.ask_depth[t]\n", " \n", " if depth_from_mid <= 0.005:\n", " sum_ask_qty_50bp = sum_ask_qty\n", " \n", " \n", " sum_bid_qty_50bp = 0.0\n", " sum_bid_qty = 0.0\n", " for price_tick in range(depth.best_bid_tick, roi_lb_tick - 1, -1):\n", " if price_tick < roi_lb_tick or price_tick > roi_ub_tick:\n", " continue\n", " t = price_tick - roi_lb_tick\n", " \n", " bid_price = price_tick * depth.tick_size\n", " depth_from_mid = (mid_price - bid_price) / mid_price\n", " if depth_from_mid > 0.01:\n", " break\n", " sum_bid_qty += depth.bid_depth[t]\n", " \n", " if depth_from_mid <= 0.005:\n", " sum_bid_qty_50bp = sum_bid_qty\n", " \n", " imbalance_50bp = sum_bid_qty_50bp - sum_ask_qty_50bp\n", " imbalance_1pct = sum_bid_qty - sum_ask_qty\n", " imbalance_tob = depth.bid_depth[depth.best_bid_tick - roi_lb_tick] - depth.ask_depth[depth.best_ask_tick - roi_lb_tick]\n", " \n", " out.append((hbt.current_timestamp, imbalance_tob, imbalance_50bp, imbalance_1pct)) \n", " return True" ] }, { "cell_type": "code", "execution_count": 8, "id": "99a684f8", "metadata": {}, "outputs": [], "source": [ "from numba.typed import List\n", "from numba.types import Tuple, float64\n", "\n", "hbt = ROIVectorMarketDepthBacktest([asset])\n", "\n", "tup_ty = Tuple((float64, float64, float64, float64))\n", "out = List.empty_list(tup_ty, allocated=100_000)\n", "\n", "orderbookimbalance(hbt, out)\n", "\n", "_ = hbt.close()" ] }, { "cell_type": "code", "execution_count": 9, "id": "be1b53b2", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "shape: (30, 4)
Local TimestampTOB Imbalance0.5% Imbalance1% Imbalance
datetime[ns]f64f64f64
2024-08-09 00:00:11.5002.729-1748.101-3908.736
2024-08-09 00:00:21.5004.623-1749.435-3512.845
2024-08-09 00:00:31.500-6.465-1259.897-3357.755
2024-08-09 00:00:41.500-7.922-1174.185-3471.955
2024-08-09 00:00:51.500-2.484-1147.597-3461.48
2024-08-09 00:04:21.5003.828-1186.236-3551.78
2024-08-09 00:04:31.500-1.35-1332.379-3517.854
2024-08-09 00:04:41.500-3.754-1166.521-2693.672
2024-08-09 00:04:51.500-2.525-1188.56-2716.914
2024-08-09 00:05:01.5001.91-594.991-2138.82
" ], "text/plain": [ "shape: (30, 4)\n", "┌─────────────────────────┬───────────────┬────────────────┬──────────────┐\n", "│ Local Timestamp ┆ TOB Imbalance ┆ 0.5% Imbalance ┆ 1% Imbalance │\n", "│ --- ┆ --- ┆ --- ┆ --- │\n", "│ datetime[ns] ┆ f64 ┆ f64 ┆ f64 │\n", "╞═════════════════════════╪═══════════════╪════════════════╪══════════════╡\n", "│ 2024-08-09 00:00:11.500 ┆ 2.729 ┆ -1748.101 ┆ -3908.736 │\n", "│ 2024-08-09 00:00:21.500 ┆ 4.623 ┆ -1749.435 ┆ -3512.845 │\n", "│ 2024-08-09 00:00:31.500 ┆ -6.465 ┆ -1259.897 ┆ -3357.755 │\n", "│ 2024-08-09 00:00:41.500 ┆ -7.922 ┆ -1174.185 ┆ -3471.955 │\n", "│ 2024-08-09 00:00:51.500 ┆ -2.484 ┆ -1147.597 ┆ -3461.48 │\n", "│ … ┆ … ┆ … ┆ … │\n", "│ 2024-08-09 00:04:21.500 ┆ 3.828 ┆ -1186.236 ┆ -3551.78 │\n", "│ 2024-08-09 00:04:31.500 ┆ -1.35 ┆ -1332.379 ┆ -3517.854 │\n", "│ 2024-08-09 00:04:41.500 ┆ -3.754 ┆ -1166.521 ┆ -2693.672 │\n", "│ 2024-08-09 00:04:51.500 ┆ -2.525 ┆ -1188.56 ┆ -2716.914 │\n", "│ 2024-08-09 00:05:01.500 ┆ 1.91 ┆ -594.991 ┆ -2138.82 │\n", "└─────────────────────────┴───────────────┴────────────────┴──────────────┘" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import polars as pl\n", "\n", "df = pl.DataFrame(out).transpose()\n", "df.columns = ['Local Timestamp', 'TOB Imbalance', '0.5% Imbalance', '1% Imbalance']\n", "df = df.with_columns(\n", " pl.from_epoch('Local Timestamp', time_unit='ns')\n", ")\n", "\n", "df" ] }, { "cell_type": "code", "execution_count": 10, "id": "f3b43c9f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from matplotlib import pyplot\n", "\n", "pyplot.plot(df['Local Timestamp'], df['TOB Imbalance'])\n", "pyplot.plot(df['Local Timestamp'], df['0.5% Imbalance'])\n", "pyplot.plot(df['Local Timestamp'], df['1% Imbalance'])" ] }, { "cell_type": "markdown", "id": "d5a9d4a3", "metadata": {}, "source": [ "## Display last trades between the step" ] }, { "cell_type": "code", "execution_count": 11, "id": "71dd4f1a", "metadata": {}, "outputs": [], "source": [ "from hftbacktest import BUY_EVENT\n", "\n", "@njit\n", "def print_trades(hbt):\n", " while hbt.elapse(60 * 1e9) == 0:\n", " print('-------------------------------------------------------------------------------')\n", " print('current_timestamp:', hbt.current_timestamp)\n", "\n", " # Gets the last trades occurring in the market, not the trades of our orders.\n", " last_trades = hbt.last_trades(0)\n", " \n", " num = 0\n", " for last_trade in last_trades:\n", " if num > 10:\n", " print('...')\n", " break\n", " print(\n", " 'exch_timestamp:',\n", " last_trade.exch_ts,\n", " 'buy' if (last_trade.ev & BUY_EVENT) == BUY_EVENT else 'sell',\n", " last_trade.qty,\n", " '@',\n", " last_trade.px\n", " )\n", " num += 1\n", "\n", " # To prevent accumulating all last trades, which may cause a slowdown,\n", " # clear_last_trades needs to be called.\n", " # After this, accessing `last_trades` will cause a crash.\n", " hbt.clear_last_trades(0)\n", " return True" ] }, { "cell_type": "code", "execution_count": 12, "id": "0d37656a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-------------------------------------------------------------------------------\n", "current_timestamp: 1723161661500000000\n", "exch_timestamp: 1723161602372000000 buy 0.489 @ 61659.8\n", "exch_timestamp: 1723161602372000000 buy 0.198 @ 61659.8\n", "exch_timestamp: 1723161602372000000 buy 0.006 @ 61659.8\n", "exch_timestamp: 1723161602372000000 buy 0.002 @ 61659.8\n", "exch_timestamp: 1723161602372000000 buy 0.003 @ 61659.8\n", "exch_timestamp: 1723161602372000000 buy 0.011 @ 61659.8\n", "exch_timestamp: 1723161602372000000 buy 0.238 @ 61659.8\n", "exch_timestamp: 1723161602372000000 buy 0.007 @ 61659.8\n", "exch_timestamp: 1723161602372000000 buy 0.005 @ 61659.8\n", "exch_timestamp: 1723161602372000000 buy 0.003 @ 61659.8\n", "exch_timestamp: 1723161602372000000 buy 0.002 @ 61659.8\n", "...\n", "-------------------------------------------------------------------------------\n", "current_timestamp: 1723161721500000000\n", "exch_timestamp: 1723161661697000000 sell 0.002 @ 61594.1\n", "exch_timestamp: 1723161661724000000 sell 0.002 @ 61594.1\n", "exch_timestamp: 1723161661751000000 buy 0.135 @ 61594.2\n", "exch_timestamp: 1723161661806000000 sell 1.328 @ 61594.1\n", "exch_timestamp: 1723161661806000000 sell 0.002 @ 61594.1\n", "exch_timestamp: 1723161661806000000 sell 0.002 @ 61594.1\n", "exch_timestamp: 1723161661806000000 sell 0.002 @ 61594.1\n", "exch_timestamp: 1723161661806000000 sell 0.006 @ 61594.1\n", "exch_timestamp: 1723161661806000000 sell 0.32 @ 61594.1\n", "exch_timestamp: 1723161661806000000 sell 0.032 @ 61594.1\n", "exch_timestamp: 1723161661806000000 sell 1.208 @ 61594.1\n", "...\n", "-------------------------------------------------------------------------------\n", "current_timestamp: 1723161781500000000\n", "exch_timestamp: 1723161721541000000 sell 0.002 @ 61576.5\n", "exch_timestamp: 1723161721574000000 buy 0.012 @ 61576.6\n", "exch_timestamp: 1723161721578000000 sell 0.003 @ 61576.5\n", "exch_timestamp: 1723161721583000000 buy 0.275 @ 61576.6\n", "exch_timestamp: 1723161721583000000 buy 0.469 @ 61576.6\n", "exch_timestamp: 1723161721585000000 buy 0.095 @ 61576.6\n", "exch_timestamp: 1723161721585000000 buy 0.102 @ 61576.6\n", "exch_timestamp: 1723161721585000000 buy 0.197 @ 61576.6\n", "exch_timestamp: 1723161721586000000 buy 0.13 @ 61576.6\n", "exch_timestamp: 1723161721587000000 buy 0.425 @ 61576.6\n", "exch_timestamp: 1723161721587000000 buy 0.324 @ 61576.6\n", "...\n", "-------------------------------------------------------------------------------\n", "current_timestamp: 1723161841500000000\n", "exch_timestamp: 1723161781628000000 sell 0.026 @ 61629.6\n", "exch_timestamp: 1723161781727000000 buy 0.011 @ 61629.7\n", "exch_timestamp: 1723161781727000000 buy 0.05 @ 61629.7\n", "exch_timestamp: 1723161781727000000 buy 0.006 @ 61629.7\n", "exch_timestamp: 1723161781727000000 buy 0.002 @ 61629.7\n", "exch_timestamp: 1723161781727000000 buy 0.007 @ 61629.7\n", "exch_timestamp: 1723161781727000000 buy 0.002 @ 61629.7\n", "exch_timestamp: 1723161781727000000 buy 0.075 @ 61629.7\n", "exch_timestamp: 1723161781727000000 buy 0.065 @ 61629.7\n", "exch_timestamp: 1723161781727000000 buy 0.247 @ 61629.7\n", "exch_timestamp: 1723161781727000000 buy 0.002 @ 61629.7\n", "...\n", "-------------------------------------------------------------------------------\n", "current_timestamp: 1723161901500000000\n", "exch_timestamp: 1723161841561000000 buy 0.01 @ 61621.6\n", "exch_timestamp: 1723161841561000000 buy 0.006 @ 61621.6\n", "exch_timestamp: 1723161841561000000 buy 0.002 @ 61621.6\n", "exch_timestamp: 1723161841561000000 buy 0.022 @ 61621.6\n", "exch_timestamp: 1723161841561000000 buy 0.097 @ 61621.6\n", "exch_timestamp: 1723161841561000000 buy 0.024 @ 61621.6\n", "exch_timestamp: 1723161841564000000 buy 0.024 @ 61621.6\n", "exch_timestamp: 1723161841564000000 buy 0.014 @ 61621.6\n", "exch_timestamp: 1723161841565000000 buy 0.003 @ 61621.6\n", "exch_timestamp: 1723161841613000000 buy 0.002 @ 61622.5\n", "exch_timestamp: 1723161841613000000 buy 0.003 @ 61622.6\n", "...\n" ] } ], "source": [ "asset = (\n", " BacktestAsset()\n", " .data(btcusdt_20240809)\n", " .initial_snapshot(btcusdt_20240808_eod)\n", " .linear_asset(1.0) \n", " .constant_latency(10_000_000, 10_000_000)\n", " .risk_adverse_queue_model() \n", " .no_partial_fill_exchange()\n", " .trading_value_fee_model(0.0002, 0.0007)\n", " .tick_size(0.1)\n", " .lot_size(0.001)\n", " # To retrieve the last trades, `last_trades_capacity` should be set.\n", " .last_trades_capacity(1000)\n", " .roi_lb(30000)\n", " .roi_ub(90000)\n", ")\n", "\n", "hbt = ROIVectorMarketDepthBacktest([asset])\n", "\n", "print_trades(hbt)\n", "\n", "_ = hbt.close()" ] }, { "cell_type": "markdown", "id": "a37694e1", "metadata": {}, "source": [ "## Rolling Volume-Weighted Average Price" ] }, { "cell_type": "code", "execution_count": 13, "id": "002fa805", "metadata": {}, "outputs": [], "source": [ "@njit\n", "def rolling_vwap(hbt, out):\n", " buy_amount_bin = np.zeros(100_000, np.float64)\n", " buy_qty_bin = np.zeros(100_000, np.float64)\n", " sell_amount_bin = np.zeros(100_000, np.float64)\n", " sell_qty_bin = np.zeros(100_000, np.float64)\n", " \n", " idx = 0\n", " last_trade_price = np.nan\n", " \n", " while hbt.elapse(10 * 1e9) == 0:\n", " last_trades = hbt.last_trades(0)\n", " \n", " for last_trade in last_trades:\n", " if (last_trade.ev & BUY_EVENT) == BUY_EVENT:\n", " buy_amount_bin[idx] += last_trade.px * last_trade.qty\n", " buy_qty_bin[idx] += last_trade.qty\n", " else:\n", " sell_amount_bin[idx] += last_trade.px * last_trade.qty\n", " sell_qty_bin[idx] += last_trade.qty\n", " \n", " hbt.clear_last_trades(0)\n", " idx += 1\n", "\n", " if idx >= 1:\n", " vwap10sec = np.divide(\n", " buy_amount_bin[idx - 1] + sell_amount_bin[idx - 1], \n", " buy_qty_bin[idx - 1] + sell_qty_bin[idx - 1]\n", " )\n", " else:\n", " vwap10sec = np.nan\n", " \n", " if idx >= 6:\n", " vwap1m = np.divide(\n", " np.sum(buy_amount_bin[idx - 6:idx]) + np.sum(sell_amount_bin[idx - 6:idx]), \n", " np.sum(buy_qty_bin[idx - 6:idx]) + np.sum(sell_qty_bin[idx - 6:idx])\n", " )\n", " buy_vwap1m = np.divide(np.sum(buy_amount_bin[idx - 6:idx]), np.sum(buy_qty_bin[idx - 6:idx]))\n", " sell_vwap1m = np.divide(np.sum(sell_amount_bin[idx - 6:idx]), np.sum(sell_qty_bin[idx - 6:idx]))\n", " else:\n", " vwap1m = np.nan\n", " buy_vwap1m = np.nan\n", " sell_vwap1m = np.nan\n", " \n", " out.append((hbt.current_timestamp, vwap10sec, vwap1m, buy_vwap1m, sell_vwap1m))\n", " return True" ] }, { "cell_type": "code", "execution_count": 14, "id": "f90739a8", "metadata": {}, "outputs": [], "source": [ "hbt = ROIVectorMarketDepthBacktest([asset])\n", "\n", "tup_ty = Tuple((float64, float64, float64, float64, float64))\n", "out = List.empty_list(tup_ty, allocated=100_000)\n", "\n", "rolling_vwap(hbt, out)\n", "\n", "_ = hbt.close()" ] }, { "cell_type": "code", "execution_count": 15, "id": "f2ab6bd3", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "shape: (30, 5)
Local Timestamp10-sec VWAP1-min VWAP1-min Buy VWAP1-min Sell VWAP
datetime[ns]f64f64f64f64
2024-08-09 00:00:11.50061687.182976NaNNaNNaN
2024-08-09 00:00:21.50061709.337576NaNNaNNaN
2024-08-09 00:00:31.50061697.538054NaNNaNNaN
2024-08-09 00:00:41.50061663.958879NaNNaNNaN
2024-08-09 00:00:51.50061637.340621NaNNaNNaN
2024-08-09 00:04:21.50061643.00984761624.45901161626.49554261622.549429
2024-08-09 00:04:31.50061670.79568561635.87725161638.36231461632.48854
2024-08-09 00:04:41.50061643.10858261641.84648961648.67233761636.032054
2024-08-09 00:04:51.50061614.72356961640.49084161647.76984461634.372128
2024-08-09 00:05:01.50061584.69746761637.33410261642.20955161632.12064
" ], "text/plain": [ "shape: (30, 5)\n", "┌─────────────────────────┬──────────────┬──────────────┬────────────────┬─────────────────┐\n", "│ Local Timestamp ┆ 10-sec VWAP ┆ 1-min VWAP ┆ 1-min Buy VWAP ┆ 1-min Sell VWAP │\n", "│ --- ┆ --- ┆ --- ┆ --- ┆ --- │\n", "│ datetime[ns] ┆ f64 ┆ f64 ┆ f64 ┆ f64 │\n", "╞═════════════════════════╪══════════════╪══════════════╪════════════════╪═════════════════╡\n", "│ 2024-08-09 00:00:11.500 ┆ 61687.182976 ┆ NaN ┆ NaN ┆ NaN │\n", "│ 2024-08-09 00:00:21.500 ┆ 61709.337576 ┆ NaN ┆ NaN ┆ NaN │\n", "│ 2024-08-09 00:00:31.500 ┆ 61697.538054 ┆ NaN ┆ NaN ┆ NaN │\n", "│ 2024-08-09 00:00:41.500 ┆ 61663.958879 ┆ NaN ┆ NaN ┆ NaN │\n", "│ 2024-08-09 00:00:51.500 ┆ 61637.340621 ┆ NaN ┆ NaN ┆ NaN │\n", "│ … ┆ … ┆ … ┆ … ┆ … │\n", "│ 2024-08-09 00:04:21.500 ┆ 61643.009847 ┆ 61624.459011 ┆ 61626.495542 ┆ 61622.549429 │\n", "│ 2024-08-09 00:04:31.500 ┆ 61670.795685 ┆ 61635.877251 ┆ 61638.362314 ┆ 61632.48854 │\n", "│ 2024-08-09 00:04:41.500 ┆ 61643.108582 ┆ 61641.846489 ┆ 61648.672337 ┆ 61636.032054 │\n", "│ 2024-08-09 00:04:51.500 ┆ 61614.723569 ┆ 61640.490841 ┆ 61647.769844 ┆ 61634.372128 │\n", "│ 2024-08-09 00:05:01.500 ┆ 61584.697467 ┆ 61637.334102 ┆ 61642.209551 ┆ 61632.12064 │\n", "└─────────────────────────┴──────────────┴──────────────┴────────────────┴─────────────────┘" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pl.DataFrame(out).transpose()\n", "df.columns = ['Local Timestamp', '10-sec VWAP', '1-min VWAP', '1-min Buy VWAP', '1-min Sell VWAP']\n", "df = df.with_columns(\n", " pl.from_epoch('Local Timestamp', time_unit='ns')\n", ")\n", "\n", "df" ] }, { "cell_type": "code", "execution_count": 16, "id": "f23d4a4e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pyplot.plot(df['Local Timestamp'], df['10-sec VWAP'])\n", "pyplot.plot(df['Local Timestamp'], df['1-min VWAP'])\n", "pyplot.plot(df['Local Timestamp'], df['1-min Buy VWAP'])\n", "pyplot.plot(df['Local Timestamp'], df['1-min Sell VWAP'])" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.14" } }, "nbformat": 4, "nbformat_minor": 5 }